用 Google 表單設計網路報名系統並不難, 不過除了報名外, 還可以再自動化產生人次及回應民眾確認報名狀況, 就用第一社大課程體驗報名來當例子, 說明相關函式的原理.
課程體驗報名網頁: http://kh1cu.blogspot.tw/2014/02/103.html
本文同時刊登於個人部落格: http://slimetw.blogspot.tw/2014/02/offset-google.html
之前稍微提過, 可以用 countif 等函式(function), 進行依條件計數, 或是對個人記帳加上"食、衣、住、行"等分類, 就可以用 sumif 計算出該分類總額. (原文: http://ithelp.ithome.com.tw/question/10145511)
如果資料填寫時有一定的規則, countif 或 sumif 是個很好用的工具, 但遇到要加總的範圍會異動, 或是要被加總的條件會異動時, 就要再使用其他公式來指定範圍.
跟查詢範圍有關的函式有幾種: index, indirect, offset, row, column 等, 這次應用是為了配合 Google 表單, 最後決定用 offset, row, column 來搭配, 概述如下:
條件
看起來只要用 countif 對表單的結果統計就好啦?
如果表單的問題選項都不會變, 的確是可以不用再加工, 但是電腦應用是為了解決問題, 有時候表單需要修改回答的選項, 比如這次是活動的報名, 會隨時異動相關場次的說明, 而造成民眾填寫網路表單時, 問題選項是會變動的. 例如:
第一個可以改善的作法, 就是加上具有唯一值特性的前置碼, 姑且也稱為 PK(Primary Key) , 比如把活動編碼, 命名為 A01, A02, A03, B01, B02, B03, etc. 報名表單的選項就用 A01 , 雖然解決了工作人員的困擾, 卻增加了民眾的困擾, 因為不小心看錯或選錯, 則工作人員還要花時間確認, 所以也有不足之處.
周星星: 爭甚麼爭! 混在一起做....不就好了!
於是選項就變成: "A01手工皂1", 過幾天因為有民眾說會過敏, 選項變成 "A01手工皂1(過敏體質請留意)", 再過幾天額滿了, 選項再變成: "A01手工皂1(過敏體質請留意)(已額滿, 我想候補)", 工作人員就準備寫 =countif(A:A,"A01手工皂1")+countif(A:A,"A01手工皂1(過敏體質請留意)")+.... 加到天荒地老了. (我連複製/貼上都懶了)
既然剛剛有設定 PK了, 那只計算 "A01" 這個 PK 總不會錯了吧, 另外建立一個工作表(sheet), 用 =left('表單回應'!$A$1,3) 就可以抓出 PK 嘍~ 原理是沒錯啦, 但是這麼簡單就可以下班了? 不可能....因為填寫 Google 表單, 是用"新增列"的處理方式, 而不是"在原列填上資料", 所以原本期望在新工作表的 A10 , 是抓表單回應的 A10 , 但是有民眾報名時, 原本表單回應的 A10 會被新增列擠到下面, 而新工作表一直「沒有對應到新增的回應, 所以統計結果是錯的」....
(邵庭, 圖片引用自 http://images.gamme.com.tw/news/2012/08/3/o5iYnqGXkZ6VqQ.jpg )
好了, 終於到了要解釋 offset 的用法了, 剛剛的心路歷程是為了解釋為什麼要選 offset 來使用, 因為電腦軟/硬體只是工具, 要視場合來用, 所以如果需求並沒有這麼複雜, 就選簡單的工具就好, 不要為了手段(工具)而忘了目的.
剛剛總共有幾個條件:
突破了這個表單新增記錄的問題之後, 後面就只是再組合成想要的資料啦:
公式不難, 難的是為什麼要用這公式, 以及如何組合出這公式, 才不會「只知其然而不知其所以然」, 希望這樣的分析過程, 能讓更多人活用相關工具, 而簡化工作嘍~ (好像忘記介紹 row 跟 column ....)